home *** CD-ROM | disk | FTP | other *** search
- package com.extensibility.xml;
-
- import com.extensibility.util.Debug;
- import com.extensibility.util.StringUtilities;
- import com.extensibility.xml.dt.DataType;
- import com.extensibility.xml.dt.DataTypeEnumeration;
- import com.extensibility.xml.dt.DataTypeFactory;
- import com.extensibility.xml.dt.DataTypeIntf;
- import com.extensibility.xml.dt.Facet;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.io.Writer;
- import java.util.Hashtable;
- import java.util.MissingResourceException;
- import java.util.ResourceBundle;
- import java.util.Vector;
-
- public abstract class BaseFlavor implements SchemaFlavorIntf {
- protected SchemaIntf schema;
- public static String FLAVOR_UNDETERMINED = "#FLAVOR_UNDETERMINED#";
- public static String FLAVOR_INVALID = "#FLAVOR_INVALID#";
- DTDFactory parserFactory;
- public static final String[] ALL_TYPES;
- public static final String[] OTHER_TYPES;
- public static final String[] SIMPLE_TYPES;
- public static final String[] ATTR_TYPES;
- static ResourceBundle displayNamesBundle;
- static Hashtable sourceNames;
-
- protected BaseFlavor(SchemaIntf var1) {
- this.schema = var1;
- }
-
- public abstract String getFlavorName();
-
- public void checkContentModel(String var1, String var2, boolean var3) throws ParserException {
- this.getParserDTDFactory().checkContentModel(var1, var2, var3);
- }
-
- public void updateContentModel(ContentModelOwner var1, String var2, boolean var3) throws ParserException {
- this.getParserDTDFactory().updateContentModel(var1, var2, var3);
- }
-
- public void checkAttributeGroup(String var1, String var2) throws ParserException {
- this.getParserDTDFactory().checkAttributeGroup(var1, var2);
- }
-
- public boolean updateAttributeGroup(AttributeDeclaration.Owner var1, String var2) throws ParserException {
- return this.getParserDTDFactory().updateAttributeGroup(var1, var2, true);
- }
-
- protected DTDFactory getParserDTDFactory() {
- if (this.parserFactory == null) {
- this.parserFactory = new DTDFactory((Schema)this.schema);
- }
-
- return this.parserFactory;
- }
-
- public int insertSubset(ExternalPEDeclaration var1) throws IOException {
- boolean var2 = true;
- ExternalSubset var3 = this.schema.getStructure().findParent(((BaseDeclaration)var1).getURI());
- if (this.schema.isSupported("GESTALT_MULTI_INSTANCE_MODULES")) {
- var2 = this.schema.getStructure().findParent(((EntityDeclaration)var1).getSystemID()) == null;
- }
-
- ExternalSubset var4 = new ExternalSubset(var3, var1);
- ((BaseDeclaration)var4).setURI(((BaseDeclaration)var1).getURI());
- this.schema.insertDeclaration(var4, (BaseDeclaration)null);
- int var5 = this.schema.getParseErrors().size();
- if (var2) {
- URI var6 = var4.getSystemURI();
- var6 = this.resolveLogical(var6, false);
- this.parse(var6, var4.getSystemURI(), this.schema.indexOf(var4) + 1, Boolean.FALSE);
- }
-
- return var5 - this.schema.getParseErrors().size();
- }
-
- public void write(Writer var1) throws IOException {
- this.write(var1, this.schema.getURI());
- }
-
- public abstract void write(Writer var1, URI var2) throws IOException;
-
- public void checkForErrors(BaseDeclaration var1) {
- if (var1 != null) {
- var1.checkForErrors(this.schema);
- this.checkForValidNMTOKENS(var1);
- } else {
- if (this.isSupported("GESTALT_ONE_PASS")) {
- Hashtable var2 = new Hashtable();
-
- for(int var3 = 0; var3 < this.schema.getCount(); ++var3) {
- BaseDeclaration var4 = this.schema.getIndDeclaration(var3);
- Vector var5 = var4.getPrerequisites(this.schema);
-
- for(int var6 = 0; var6 < var5.size(); ++var6) {
- if (!var2.containsKey(var5.elementAt(var6))) {
- Debug.assert(var5.elementAt(var6) != var4, "self as prerequisite!");
- var4.errors.addElement(new ParserException(230, ((BaseDeclaration)var5.elementAt(var6)).getName()));
- }
- }
-
- var2.put(var4, var4);
- }
- }
-
- }
- }
-
- public void doSecondPassValidation(URI var1) {
- }
-
- public void checkForValidNMTOKENS(BaseDeclaration var1) {
- if (this.schema.isSupported("GESTALT_NMTOKEN_ENUM_REQUIRED") && var1 != null && var1 instanceof AttributeDeclaration) {
- DataType var2 = ((AttributeDeclaration)var1).getDataType();
- if (var2 != null && var2.isEnumeration()) {
- Vector var3 = ((AttributeDeclaration)var1).getChoices();
- if (var3 != null && var3.size() > 0) {
- if (var3.size() != 1 || ((String)var3.elementAt(0)).length() != 0) {
- for(int var4 = 0; var4 < var3.size(); ++var4) {
- String var5 = (String)var3.elementAt(var4);
- if (this.getFlavorName().equals(DTDFlavor.NAME) && DTDUtilities.isPEName(var5)) {
- var5 = DTDUtilities.convertPEName(var5, false);
- if (this.schema.getNamedDeclaration(var5, Class.forName("com.extensibility.xml.InternalPEDeclaration")) == null) {
- var1.addError(new ParserException(69, var5));
- }
- }
-
- if (!DTDParser.isNmToken((String)var3.elementAt(var4))) {
- var1.addError(new ParserException(217, (String)var3.elementAt(var4)));
- }
- }
- } else {
- var1.addError(new ParserException(233, ""));
- }
- } else {
- var1.addError(new ParserException(233, ""));
- }
- }
- }
-
- }
-
- public abstract void parse(URI var1, URI var2, int var3, Object var4) throws IOException;
-
- public abstract String getSourcePreview(BaseDeclaration var1);
-
- public boolean isCompleteAndConsistent() {
- return true;
- }
-
- public URI getSchemaLoc(NamespaceDeclaration var1) {
- String var2 = var1.getNamespace();
- return var2 == null ? null : new URI(var2);
- }
-
- public BaseExemplar createExemplar(SchemaIntf var1) {
- return new BaseExemplar(var1);
- }
-
- public abstract boolean isSupported(Class var1);
-
- public boolean isSupported(String var1) {
- if (var1 == "GESTALT_KLEENE_OCCURS") {
- return true;
- } else {
- return var1 == "GESTALT_FACET_ENUM";
- }
- }
-
- public DataTypeEnumeration getAllTypes() {
- return DataTypeFactory.getTheseTypes(ALL_TYPES);
- }
-
- public DataTypeEnumeration getSimpleTypes() {
- return DataTypeFactory.getTheseTypes(SIMPLE_TYPES);
- }
-
- public DataTypeEnumeration getPrimitiveTypes() {
- return DataTypeFactory.getTheseTypes(ATTR_TYPES);
- }
-
- public DataTypeEnumeration getOtherTypes() {
- return DataTypeFactory.getTheseTypes(OTHER_TYPES);
- }
-
- public boolean isValidValue(DataTypeIntf var1, String var2) {
- if (var1 == null) {
- return true;
- } else if (var1.equalsSource(DataTypeIntf.BOOLEAN)) {
- return var2.equals("true") || var2.equals("false");
- } else {
- if (var1.hasEnumeration()) {
- Facet var3 = var1.getFacet(Facet.FACET_ENUM_NAME);
- Vector var4 = (Vector)var3.getValue();
- if (var4 != null) {
- String[] var5 = StringUtilities.getSingleQuotedStrings(var4);
-
- for(int var6 = 0; var6 < var5.length; ++var6) {
- if (var2.equals(var5[var6])) {
- return true;
- }
- }
-
- return false;
- }
- }
-
- return true;
- }
- }
-
- public String getDataTypeDisplay(DataTypeIntf var1) {
- return var1.isPE() ? var1.getDisplay() : getDisplay(this.getFlavorName(), var1.getSource());
- }
-
- public String getDataTypeSource(DataTypeIntf var1) {
- return var1.isPE() ? var1.getSource() : getSourceCode(this.getFlavorName(), var1.getSource());
- }
-
- public String getBaseTypeDisplay(DataTypeIntf var1) {
- return var1.isPE() ? "" : getDisplay(this.getFlavorName(), var1.getBaseType());
- }
-
- public String getBaseTypeSource(DataTypeIntf var1) {
- return var1.isPE() ? "" : getSourceCode(this.getFlavorName(), var1.getBaseType());
- }
-
- public boolean isKnownDisplay(String var1) {
- String var2 = (String)sourceNames.get(var1);
- return var2 == null ? false : DataTypeFactory.isKnown(var2);
- }
-
- public DataType createDataTypeFromDisplay(String var1) {
- String var2 = (String)sourceNames.get(var1);
- if (var2 == null) {
- var2 = var1;
- }
-
- return DataTypeFactory.createDataType(var2);
- }
-
- public static void loadDisplayNames() {
- sourceNames = new Hashtable();
-
- for(int var0 = 0; var0 < ALL_TYPES.length; ++var0) {
- sourceNames.put(getDisplay(ALL_TYPES[var0]), ALL_TYPES[var0]);
- }
-
- }
-
- public static void setDisplayNameBundle(ResourceBundle var0) {
- displayNamesBundle = var0;
- }
-
- static ResourceBundle getDisplayNameBundle() {
- return displayNamesBundle;
- }
-
- protected static String getDisplay(String var0) {
- if (displayNamesBundle == null) {
- return var0;
- } else {
- try {
- String var1 = displayNamesBundle.getString(var0);
- return var1;
- } catch (MissingResourceException var3) {
- return var0;
- }
- }
- }
-
- public static String getDisplay(String var0, String var1) {
- if (displayNamesBundle == null) {
- return var1;
- } else {
- try {
- String var2 = displayNamesBundle.getString(String.valueOf(String.valueOf(var0).concat(String.valueOf(".sd."))).concat(String.valueOf(var1)));
- return var2;
- } catch (MissingResourceException var4) {
- String var3 = getDisplay(var1);
- return var3;
- }
- }
- }
-
- public static String getSourceCode(String var0, String var1) {
- if (displayNamesBundle == null) {
- return var1;
- } else {
- try {
- String var2 = displayNamesBundle.getString(String.valueOf(String.valueOf(var0).concat(String.valueOf(".sc."))).concat(String.valueOf(var1)));
- return var2;
- } catch (MissingResourceException var4) {
- return var1;
- }
- }
- }
-
- protected String getSourceFromDisplay(String var1) {
- String var2 = (String)sourceNames.get(var1);
- if (var2 == null) {
- var2 = var1;
- }
-
- return var2;
- }
-
- protected String getSourceFromDisplay(String var1, String var2) {
- if (displayNamesBundle == null) {
- return var2;
- } else {
- try {
- String var3 = displayNamesBundle.getString(String.valueOf(String.valueOf(var1).concat(String.valueOf(".ds."))).concat(String.valueOf(var2)));
- return var3;
- } catch (MissingResourceException var5) {
- return var2;
- }
- }
- }
-
- public URI resolveLogical(URI var1, boolean var2) throws FileNotFoundException {
- String var3 = var1.toSource();
- if (!var1.exists()) {
- var1 = this.schema.resolveModuleURI(var1);
- if (var1 == null) {
- if (!var2) {
- throw new FileNotFoundException(var3);
- }
-
- var1 = URI.makeStringURI("");
- }
- }
-
- return var1;
- }
-
- static {
- ALL_TYPES = new String[]{DataTypeIntf.STRING, DataTypeIntf.NUMBER, DataTypeIntf.INT, DataTypeIntf.DECIMAL, DataTypeIntf.FLOAT, DataTypeIntf.BOOLEAN, DataTypeIntf.DATETIME, DataTypeIntf.DATE, DataTypeIntf.TIME, DataTypeIntf.URI, DataTypeIntf.ID, DataTypeIntf.IDREF, DataTypeIntf.IDREFS, DataTypeIntf.ENTITY, DataTypeIntf.ENTITIES, DataTypeIntf.NMTOKEN, DataTypeIntf.NMTOKENS, DataTypeIntf.NOTATION, DataTypeIntf.ENUMERATION, DataTypeIntf.FIXED144, DataTypeIntf.DATETIMETZ, DataTypeIntf.TIMETZ, DataTypeIntf.INTERVAL, DataTypeIntf.I1, DataTypeIntf.I2, DataTypeIntf.I4, DataTypeIntf.I8, DataTypeIntf.UI1, DataTypeIntf.UI2, DataTypeIntf.UI4, DataTypeIntf.UI8, DataTypeIntf.R4, DataTypeIntf.R8, DataTypeIntf.UUID, DataTypeIntf.BINHEX, DataTypeIntf.BINBASE64, DataTypeIntf.CHAR};
- OTHER_TYPES = new String[]{DataTypeIntf.FIXED144, DataTypeIntf.DATETIMETZ, DataTypeIntf.TIMETZ, DataTypeIntf.INTERVAL, DataTypeIntf.I1, DataTypeIntf.I2, DataTypeIntf.I4, DataTypeIntf.I8, DataTypeIntf.UI1, DataTypeIntf.UI2, DataTypeIntf.UI4, DataTypeIntf.UI8, DataTypeIntf.R4, DataTypeIntf.R8, DataTypeIntf.UUID, DataTypeIntf.BINHEX, DataTypeIntf.BINBASE64, DataTypeIntf.CHAR};
- SIMPLE_TYPES = new String[]{DataTypeIntf.STRING, DataTypeIntf.NUMBER, DataTypeIntf.INT, DataTypeIntf.DECIMAL, DataTypeIntf.FLOAT, DataTypeIntf.BOOLEAN, DataTypeIntf.DATETIME, DataTypeIntf.DATE, DataTypeIntf.TIME, DataTypeIntf.URI};
- ATTR_TYPES = new String[]{DataTypeIntf.STRING, DataTypeIntf.ID, DataTypeIntf.IDREF, DataTypeIntf.IDREFS, DataTypeIntf.ENTITY, DataTypeIntf.ENTITIES, DataTypeIntf.NMTOKEN, DataTypeIntf.NMTOKENS, DataTypeIntf.NOTATION, DataTypeIntf.ENUMERATION};
- }
- }
-